#include <iostream>
#include <memory>
using namespace std;
//使用引用计数的思想，实现写时复制

class Point{
public:
    Point(int x,int y)
    :_x(x)
    ,_y(y)
    {

    }
    Point(const Point& rhs)
    :_x(rhs._x)
    ,_y(rhs._y)
    {

    }
    Point & operator=(const Point & rhs){
        //浅拷贝
        if(this!=&rhs){
        _x=rhs._x;
        _y=rhs._y;
        }
    }
private:
    int _x,_y;
};
//写时赋值，就是如果不进行写操作，就是用浅拷贝来建立一个对象指向同一块区域
//如果涉及到深拷贝，那就重新在堆空间开辟一块区域
//浅拷贝深拷贝，区别主要在赋值运算符上面
void test(){
    unique_ptr<Point> up(new Point(1,2));
    

}
int main(int argc, char * argv[]){
    test();    
    return 0;
}

